Computer systems include memory that is used to store information (i.e., instructions and data) that is used by the computer system. An operating system that is booted and executed by computer system typically manages the memory. Some operating systems manage the memory as stacks with designated sizes that are provided to processes of the computer system. In such systems, the stack is generally managed to attempt to prevent stack overflows (i.e., exceeding the size limits of stacks).
With sequential processes, scenarios that may cause stack overflow, such as a deep nest of called functions, recursive functions, and functions with large numbers of stack variables, may be easy to recognize and prevent. As computer systems develop the ability to execute different parts of the same process (e.g., different tasks) concurrently, however, the detection of stack overflow may become much more complex. As a result, computer systems that enable concurrent execution of different parts of the same process may have a higher risk for stack overflow or may have a greater performance impact in preventing stack overflows.